import * as types from '../actionTypes/todos';

// 删除todo的 action creator
export const delTodo = (id) => ({
  type: types.DEL_TODO,
  payload: id,
});

// 切换 todo 的完成状态
export const toggleTodo = (id) => ({
  type: types.TOGGLE_TODO,
  payload: id,
});

// 新建任务 action
// export const addTodo = (text) => ({
//   type: types.ADD_TODO,
//   payload: text,
// });

// 新建任务，修改为异步action
// 1 将todo 发送给服务器
// 2 服务器创建成功后
// 3 把服务器创建成功的todo交给reducer
export const addTodo = (text) => {
  // action 生成函数，返回的是一个函数
  return (dispatch, getState) => {
    // 获取网络数据 花了2秒时间
    // const res = await axios.post('/addtodo', {txt: '敲代码'})
    // sleep(2000); // 等待2000毫秒
    const res = { text: text };
    // 获取网络数据后修改reducer数据
    dispatch({
      type: types.ADD_TODO,
      payload: res.text,
    });

    // 模拟发送请求, 2秒之后服务创建数据成功
    // setTimeout(() => {
    //   // 发送同步action
    //   dispatch({
    //     type: types.ADD_TODO,
    //     payload: text,
    //   });
    // }, 2000);
  };
};

// 切换全部任务状态
export const toggleAll = (checked) => ({
  type: types.TOGGLE_ALL,
  payload: checked,
});

// 清空已完成todo
export const clearDone = () => ({
  type: types.CLEAR_DONE,
});

// 修改任务名称
export const updateTodo = (id, text) => ({
  type: types.UPDATE_TODO,
  payload: {
    id,
    text,
  },
});
